#include <stdio.h>

int main(int argc, char **argv)
{
    const double PI = 3.1415926;
    // PI = 4; // error

    // 对于数组，const表示数组成员不能修改。
    const int arr[] = {1, 2, 3, 4};
    // arr[0] = 5; // error

    // 对于指针变量，const有两种写法，含义是不一样的。如果const在*前面，表示指针指向的值不可修改。
    int p = 1;
    int const *x = &p;
    // *x = 2; // error

    int *const x2 = &p;
    int q = 2;
    // x2 = &q; // error

    // const的一个用途，就是防止函数体内修改函数参数。如果某个参数在函数体内不会被修改，可以在函数声明时，对该参数添加const说明符。这样的话，使用这个函数的人看到原型里面的const，就知道调用函数前后，参数数组保持不变。
    // void find(const int* arr, int n);
    // 上面示例中，函数find的参数数组arr有const说明符，就说明该数组在函数内部将保持不变。

    // double *ptrDouble = &PI;// warning;
    // *ptrDouble = 4; // error

    return 0;
}